package nextel.ruta.mvc;

import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.OScrollListWrap;
import nextel.Configuracion;
import nextel.ruta.ControlRuta;
import nextel.ruta.bean.RutaPorNombreBean;
import nextel.usuario.ControlUsuario;
import nextel.util.mvc.BuscarListener;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;

import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;

/**
 *
 *
 */
public class MVCRutaResultado extends MVCAction implements BuscarListener, OListenerKey {// implements ItemStateListener  {
    
    private OSoftKey cmdSigue, cmdAtras, cmdBusqueda;
    private List lstObject;
    private OScrollListWrap lstMenu;
    private List listaDatos ;
    boolean primeraVez = true;
    private boolean flagDobleClick;
    private boolean finalizoBusqueda;
    
    protected void destroy() {
        super.destroy();
        if (lstObject != null) {
            lstObject.clear();
            lstObject = null;
        }
       if (listaDatos != null) {
            listaDatos.clear();
            listaDatos = null;
        }
        
        lstMenu = null;
    }
    
    protected void createView() {
        
        cmdSigue = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SEGUIR));
        cmdAtras = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATRAS));
        cmdBusqueda = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_BUSCAR));
        
        formulario.setTitle(" ... ... ", OUILook.PLAIN_SMALL_TITLE);
        
        formulario.addSoftKey(cmdSigue);
        formulario.addSoftKey(cmdAtras);
        formulario.addSoftKey(cmdBusqueda);
        
    }
    
    protected void createItems() {
//        System.out.println("createItems");
        primeraVez = true;
        flagDobleClick = true;
//        listaDatos.clear();
        listaDatos = new ArrayList();
        finalizoBusqueda = false;
        
        if (lstObject == null) {
            lstObject = new ArrayList();
        }
        
        formulario.setTitle(" ... ... ", OUILook.PLAIN_SMALL_TITLE);
        
        lstMenu = new OScrollListWrap(formulario.getWidth(), formulario.getBodyHeight(),
                OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
        
        lstMenu.setModeWrap(true);
        lstMenu.isWithBorder = false;
        lstMenu.listenerKey = this;
        
        formulario.add(lstMenu);
    
    }
    
    public void performAction(OSoftKey c) {
        if (flagDobleClick) {
            
            if (c == cmdSigue) {
                
                if (lstObject.size() > 0 && lstMenu.getSelectedIndex() >= 0) {
                    finalizoBusqueda = true;
                    flagDobleClick = false;
                    RutaPorNombreBean rutaPorNombre = (RutaPorNombreBean) lstObject.get(lstMenu.getSelectedIndex( ));
                    destroy();
                    ControlRuta.getInstance().obtenerRutaPorNombre(rutaPorNombre);
                }
                
            } else if (c == cmdAtras) {
                flagDobleClick = false;
                finalizoBusqueda = true;
                destroy();
                ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu);
                
            } else if (c == cmdBusqueda) {
                flagDobleClick = false;
                finalizoBusqueda = true;
                destroy();
                ControlRuta.getInstance().setCurrent(ControlRuta.getInstance().mvcRutaBusqueda);
            }
        }
    }
    
    public void performKey(int indx) {
        
        if (flagDobleClick) {
            
            if (indx == Key.Key_OK ) {
                if (lstObject.size() > 0 && lstMenu.getSelectedIndex() >= 0) {
                    finalizoBusqueda = true;
                    flagDobleClick = false;
                    RutaPorNombreBean clientePorNombre = (RutaPorNombreBean) lstObject.get(lstMenu.getSelectedIndex());
                    destroy();
                    ControlRuta.getInstance().obtenerRutaPorNombre(clientePorNombre);
                    
                }
            }
            
        }
    }
    
    public void agregarElementosVectorDatos(List lista) {
        
        if (!finalizoBusqueda) { // si no finaliza la busqueda o se interrumpe
            
            RutaPorNombreBean rutaPorNombreBean;
  
            for (int i = 0; i < lista.size(); i++) {
                rutaPorNombreBean = (RutaPorNombreBean) lista.get(i);
                listaDatos.add(rutaPorNombreBean.getNombreRuta());
                lstObject.add(rutaPorNombreBean);
            }
            
            if (primeraVez) {
               
                lstMenu.populate(listaDatos);
                formulario.repaint();
                primeraVez = false;
            }
            
            if (lista != null) {
                lista.clear();
            }
            
            lista = null;
            rutaPorNombreBean = null;
            
        }
    }
    
    public void finalizo() {
        finalizoBusqueda = false;
        
        if (formulario != null ) {
 
            int cantidad = lstObject != null ? lstObject.size() : 0;
            
            formulario.setTitle( IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_RUTA) +  " #" + cantidad, OUILook.PLAIN_SMALL_TITLE);
            
            lstMenu.recalcular();
            
            formulario.repaint();
            
        }
    }
    
    public boolean esFinalizadaBusqueda() {
        return finalizoBusqueda;
    }
}
